{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import math\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "X = np.linspace(-5,5,200)\n",
    "y = [1/(1+math.e**(-x)) for x in X]\n",
    "plt.plot(X,y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "X = np.linspace(-100,100,400)\n",
    "y = [1/(1+math.e**(-x)) for x in X]\n",
    "plt.plot(X,y)\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>x1</th>\n",
       "      <th>x2</th>\n",
       "      <th>labels</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.017612</td>\n",
       "      <td>14.053064</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-1.395634</td>\n",
       "      <td>4.662541</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-0.752157</td>\n",
       "      <td>6.538620</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-1.322371</td>\n",
       "      <td>7.152853</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.423363</td>\n",
       "      <td>11.054677</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>95</th>\n",
       "      <td>0.677983</td>\n",
       "      <td>2.556666</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>96</th>\n",
       "      <td>0.761349</td>\n",
       "      <td>10.693862</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>97</th>\n",
       "      <td>-2.168791</td>\n",
       "      <td>0.143632</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>98</th>\n",
       "      <td>1.388610</td>\n",
       "      <td>9.341997</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>99</th>\n",
       "      <td>0.317029</td>\n",
       "      <td>14.739025</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>100 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "          x1         x2  labels\n",
       "0  -0.017612  14.053064       0\n",
       "1  -1.395634   4.662541       1\n",
       "2  -0.752157   6.538620       0\n",
       "3  -1.322371   7.152853       0\n",
       "4   0.423363  11.054677       0\n",
       "..       ...        ...     ...\n",
       "95  0.677983   2.556666       1\n",
       "96  0.761349  10.693862       0\n",
       "97 -2.168791   0.143632       1\n",
       "98  1.388610   9.341997       0\n",
       "99  0.317029  14.739025       0\n",
       "\n",
       "[100 rows x 3 columns]"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_table('set/testSet.txt',header = None)\n",
    "df.columns =['x1','x2','labels']\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "def sigmoid(x):\n",
    "    return 1/(1+np.exp(-x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "def BGD_LR(df,alpha = 0.001,maxCycles = 5000):\n",
    "    xMat = np.mat(df.iloc[:,:-1])\n",
    "    yMat = np.mat(df.iloc[:,-1])\n",
    "    m,_ = xMat.shape\n",
    "    xMat = np.column_stack((np.ones(m),xMat))\n",
    "    m,n = xMat.shape\n",
    "    weights= np.zeros((n,1))\n",
    "    for i in range(maxCycles):\n",
    "        h  = sigmoid(xMat * weights)\n",
    "        grad = xMat.T*(h- yMat.T)/m\n",
    "        weights -= alpha * grad\n",
    "    return weights"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([[ 0.85428423],\n",
       "        [ 0.10822229],\n",
       "        [-0.21582062]]),\n",
       " array([[ 3.90251978],\n",
       "        [ 0.46067388],\n",
       "        [-0.58896607]]),\n",
       " array([[ 9.31772343],\n",
       "        [ 0.87155023],\n",
       "        [-1.28445609]]))"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "weights1,weights2,weights3 = BGD_LR(df,0.01,500),BGD_LR(df,0.01,5000),BGD_LR(df,0.01,50000)\n",
    "weights1,weights2,weights3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "matrix([[-1.7612000e-02,  1.4053064e+01],\n",
       "        [-1.3956340e+00,  4.6625410e+00],\n",
       "        [-7.5215700e-01,  6.5386200e+00],\n",
       "        [-1.3223710e+00,  7.1528530e+00],\n",
       "        [ 4.2336300e-01,  1.1054677e+01],\n",
       "        [ 4.0670400e-01,  7.0673350e+00],\n",
       "        [ 6.6739400e-01,  1.2741452e+01],\n",
       "        [-2.4601500e+00,  6.8668050e+00],\n",
       "        [ 5.6941100e-01,  9.5487550e+00],\n",
       "        [-2.6632000e-02,  1.0427743e+01],\n",
       "        [ 8.5043300e-01,  6.9203340e+00],\n",
       "        [ 1.3471830e+00,  1.3175500e+01],\n",
       "        [ 1.1768130e+00,  3.1670200e+00],\n",
       "        [-1.7818710e+00,  9.0979530e+00],\n",
       "        [-5.6660600e-01,  5.7490030e+00],\n",
       "        [ 9.3163500e-01,  1.5895050e+00],\n",
       "        [-2.4205000e-02,  6.1518230e+00],\n",
       "        [-3.6453000e-02,  2.6909880e+00],\n",
       "        [-1.9694900e-01,  4.4416500e-01],\n",
       "        [ 1.0144590e+00,  5.7543990e+00],\n",
       "        [ 1.9852980e+00,  3.2306190e+00],\n",
       "        [-1.6934530e+00, -5.5754000e-01],\n",
       "        [-5.7652500e-01,  1.1778922e+01],\n",
       "        [-3.4681100e-01, -1.6787300e+00],\n",
       "        [-2.1244840e+00,  2.6724710e+00],\n",
       "        [ 1.2179160e+00,  9.5970150e+00],\n",
       "        [-7.3392800e-01,  9.0986870e+00],\n",
       "        [-3.6420010e+00, -1.6180870e+00],\n",
       "        [ 3.1598500e-01,  3.5239530e+00],\n",
       "        [ 1.4166140e+00,  9.6192320e+00],\n",
       "        [-3.8632300e-01,  3.9892860e+00],\n",
       "        [ 5.5692100e-01,  8.2949840e+00],\n",
       "        [ 1.2248630e+00,  1.1587360e+01],\n",
       "        [-1.3478030e+00, -2.4060510e+00],\n",
       "        [ 1.1966040e+00,  4.9518510e+00],\n",
       "        [ 2.7522100e-01,  9.5436470e+00],\n",
       "        [ 4.7057500e-01,  9.3324880e+00],\n",
       "        [-1.8895670e+00,  9.5426620e+00],\n",
       "        [-1.5278930e+00,  1.2150579e+01],\n",
       "        [-1.1852470e+00,  1.1309318e+01],\n",
       "        [-4.4567800e-01,  3.2973030e+00],\n",
       "        [ 1.0422220e+00,  6.1051550e+00],\n",
       "        [-6.1878700e-01,  1.0320986e+01],\n",
       "        [ 1.1520830e+00,  5.4846700e-01],\n",
       "        [ 8.2853400e-01,  2.6760450e+00],\n",
       "        [-1.2377280e+00,  1.0549033e+01],\n",
       "        [-6.8356500e-01, -2.1661250e+00],\n",
       "        [ 2.2945600e-01,  5.9219380e+00],\n",
       "        [-9.5988500e-01,  1.1555336e+01],\n",
       "        [ 4.9291100e-01,  1.0993324e+01],\n",
       "        [ 1.8499200e-01,  8.7214880e+00],\n",
       "        [-3.5571500e-01,  1.0325976e+01],\n",
       "        [-3.9782200e-01,  8.0583970e+00],\n",
       "        [ 8.2483900e-01,  1.3730343e+01],\n",
       "        [ 1.5072780e+00,  5.0278660e+00],\n",
       "        [ 9.9671000e-02,  6.8358390e+00],\n",
       "        [-3.4400800e-01,  1.0717485e+01],\n",
       "        [ 1.7859280e+00,  7.7186450e+00],\n",
       "        [-9.1880100e-01,  1.1560217e+01],\n",
       "        [-3.6400900e-01,  4.7473000e+00],\n",
       "        [-8.4172200e-01,  4.1190830e+00],\n",
       "        [ 4.9042600e-01,  1.9605390e+00],\n",
       "        [-7.1940000e-03,  9.0757920e+00],\n",
       "        [ 3.5610700e-01,  1.2447863e+01],\n",
       "        [ 3.4257800e-01,  1.2281162e+01],\n",
       "        [-8.1082300e-01, -1.4660180e+00],\n",
       "        [ 2.5307770e+00,  6.4768010e+00],\n",
       "        [ 1.2966830e+00,  1.1607559e+01],\n",
       "        [ 4.7548700e-01,  1.2040035e+01],\n",
       "        [-7.8327700e-01,  1.1009725e+01],\n",
       "        [ 7.4798000e-02,  1.1023650e+01],\n",
       "        [-1.3374720e+00,  4.6833900e-01],\n",
       "        [-1.0278100e-01,  1.3763651e+01],\n",
       "        [-1.4732400e-01,  2.8748460e+00],\n",
       "        [ 5.1838900e-01,  9.8870350e+00],\n",
       "        [ 1.0153990e+00,  7.5718820e+00],\n",
       "        [-1.6580860e+00, -2.7255000e-02],\n",
       "        [ 1.3199440e+00,  2.1712280e+00],\n",
       "        [ 2.0562160e+00,  5.0199810e+00],\n",
       "        [-8.5163300e-01,  4.3756910e+00],\n",
       "        [-1.5100470e+00,  6.0619920e+00],\n",
       "        [-1.0766370e+00, -3.1818880e+00],\n",
       "        [ 1.8210960e+00,  1.0283990e+01],\n",
       "        [ 3.0101500e+00,  8.4017660e+00],\n",
       "        [-1.0994580e+00,  1.6882740e+00],\n",
       "        [-8.3487200e-01, -1.7338690e+00],\n",
       "        [-8.4663700e-01,  3.8490750e+00],\n",
       "        [ 1.4001020e+00,  1.2628781e+01],\n",
       "        [ 1.7528420e+00,  5.4681660e+00],\n",
       "        [ 7.8557000e-02,  5.9736000e-02],\n",
       "        [ 8.9392000e-02, -7.1530000e-01],\n",
       "        [ 1.8256620e+00,  1.2693808e+01],\n",
       "        [ 1.9744500e-01,  9.7446380e+00],\n",
       "        [ 1.2611700e-01,  9.2231100e-01],\n",
       "        [-6.7979700e-01,  1.2205300e+00],\n",
       "        [ 6.7798300e-01,  2.5566660e+00],\n",
       "        [ 7.6134900e-01,  1.0693862e+01],\n",
       "        [-2.1687910e+00,  1.4363200e-01],\n",
       "        [ 1.3886100e+00,  9.3419970e+00],\n",
       "        [ 3.1702900e-01,  1.4739025e+01]])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.mat(df.iloc[:,:-1].values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(2, 100)"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.mat(df.iloc[:,:-1].values).T.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(100, 2)"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.mat(df.iloc[:,:-1].values).shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    -0.017612\n",
       "2    -0.752157\n",
       "3    -1.322371\n",
       "4     0.423363\n",
       "6     0.667394\n",
       "8     0.569411\n",
       "9    -0.026632\n",
       "11    1.347183\n",
       "13   -1.781871\n",
       "22   -0.576525\n",
       "25    1.217916\n",
       "26   -0.733928\n",
       "29    1.416614\n",
       "32    1.224863\n",
       "35    0.275221\n",
       "36    0.470575\n",
       "37   -1.889567\n",
       "38   -1.527893\n",
       "39   -1.185247\n",
       "42   -0.618787\n",
       "45   -1.237728\n",
       "48   -0.959885\n",
       "49    0.492911\n",
       "50    0.184992\n",
       "51   -0.355715\n",
       "52   -0.397822\n",
       "53    0.824839\n",
       "56   -0.344008\n",
       "58   -0.918801\n",
       "62   -0.007194\n",
       "63    0.356107\n",
       "64    0.342578\n",
       "67    1.296683\n",
       "68    0.475487\n",
       "69   -0.783277\n",
       "70    0.074798\n",
       "72   -0.102781\n",
       "74    0.518389\n",
       "75    1.015399\n",
       "80   -1.510047\n",
       "82    1.821096\n",
       "87    1.400102\n",
       "91    1.825662\n",
       "92    0.197445\n",
       "96    0.761349\n",
       "98    1.388610\n",
       "99    0.317029\n",
       "Name: x1, dtype: float64"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[df['labels'] == 0]['x1']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plotBestFit(weights):\n",
    "    fig = plt.figure()\n",
    "    ax = fig.add_subplot(111)\n",
    "    ax.scatter( df[df['labels'] == 0]['x1'], df[df['labels'] == 0]['x2'],s=30,c='red',marker='s')\n",
    "    ax.scatter( df[df['labels'] == 1]['x1'], df[df['labels'] == 1]['x2'],s=30,c='green')\n",
    "    x = np.arange(-3.0,3.2,0.1)\n",
    "    y = (0-weights[0]-weights[1]*x) / weights[2]\n",
    "    ax.plot(x,y)\n",
    "    plt.xlabel('x1')\n",
    "    plt.ylabel('x2')\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "(None, None, None)"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "plotBestFit(weights1), plotBestFit(weights2),plotBestFit(weights3)"
   ]
  }
 ],
 "metadata": {
  "interpreter": {
   "hash": "8bfad08b73d8ae58273d7e252c9e1d922058e2a21d3a8ccb2a1b9808ae54a57f"
  },
  "kernelspec": {
   "display_name": "Python 3.8.0 32-bit",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.0"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
